package com.xiaocai.myblog.utils;

import com.xiaocai.myblog.common.ResponseData;
import com.xiaocai.myblog.common.SuccessResponseData;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;

/**
 * @author chenhefu
 * @date 2019-09-30 21:30
 */
public class MailUtil {
    protected static final Logger LOG = LoggerFactory.getLogger(MailUtil.class);

    private final static String NAME = "1848992877@qq.com";

    private final static String PASSWORD = "vnfgwotysevedfhg";


    public static boolean sendEmail(String email,String code) {

        // 创建连接对象 连接到邮件服务器
        Properties properties = new Properties();

        // 设置发送邮件的基本参数
        // 发送邮件服务器(注意，此处根据你的服务器来决定，我这里使用的是QQ服务器，所以是smtp.qq.com)
        properties.put("mail.smtp.host", "smtp.qq.com");

        // 发送端口（根据实际情况填写，一般均为25）
        properties.put("mail.smtp.port", "25");
        properties.put("mail.smtp.auth", "true");

        // 设置发送邮件的账号和密码
        Session session = Session.getInstance(properties, new Authenticator() {

            @Override
            protected PasswordAuthentication getPasswordAuthentication() {

                // 两个参数分别是发送邮件的账户和密码(注意，如果配置后不生效，请检测是否开启了 POP3/SMTP 服务，QQ邮箱对应设置位置在:
                // [设置-账户-POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务])
                return new PasswordAuthentication(NAME, PASSWORD);

            }

        });

        // 创建邮件对象
        Message message = new MimeMessage(session);
        try {
            // 设置发件人
            message.setFrom(new InternetAddress(NAME));
            // 设置收件人
            message.setRecipient(Message.RecipientType.TO, new InternetAddress(email));

            // 设置主题，在这里要根据业务需求，千万别直接复制粘贴就用了。

            message.setSubject("帐号注册验证");

            // 设置邮件正文 ,因为要生成验证码，所以在此插入正文中

            //我这里是采用六位数随机数字。五位后面*10000，四位*1000。。。


            //因为为了简单，所以内容做的比较简单，直接就是字符串了。如果内容比较多还是建议读取配置文件吧
            String content = "系统收到此邮箱帐号在城市家园网的注册申请,为确认账户的真实性,须完成账户验证。本次验证码为 <b>" + code + "</b>,有效时间30分钟。如果不是本账户持有人操作,请忽略!";
            message.setContent(content, "text/html;charset=UTF-8");
            // 发送邮件
            Transport.send(message);
            return true;
        } catch (Exception e) {
            LOG.error("Error Message: " + e.getMessage());
            return false;
        }

    }
}
